package com.baseframe.topic.controller;

import com.baseframe.tool.result.R;
import com.baseframe.topic.entity.request.SnsTestTopicItemRequest;
import com.baseframe.topic.service.SnsTestTopicItemService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/back/test-topic-item")
@AllArgsConstructor
public class BackSnsTestTopicItemController {

    private SnsTestTopicItemService snsTestTopicItemService;

    /**
     * 保存或更新题目和选项
     *
     * @param request 题目和选项的请求对象
     * @return R对象，包含保存或更新操作结果信息
     */
    @PostMapping("/save-or-update")
    public R<Object> saveOrUpdate(@RequestBody SnsTestTopicItemRequest request) {
        // 调用服务层进行保存或更新题目和选项操作，并返回相应结果
        return snsTestTopicItemService.saveOrUpdateTopicItemAndItemOption(request);
    }

    /**
     * 获取题目列表
     *
     * @param request 获取题目列表的请求对象
     * @return R对象，包含题目列表信息
     */
    @GetMapping("/list")
    public R<Object> getTestTopicItems(SnsTestTopicItemRequest request) {
        // 检查必要的请求参数是否存在
        if (request.getTopicId() == null) {
            return R.fail("缺少必要请求参数~");
        }
        // 调用服务层获取题目列表，并返回查询结果
        return R.data(snsTestTopicItemService.getTopItems(request));
    }

    /**
     * 删除题目
     *
     * @param request 删除题目的请求对象
     * @return R对象，包含删除操作结果信息
     */
    @PostMapping("/delete")
    public R<Object> delete(@RequestBody SnsTestTopicItemRequest request) {
        // 检查必要的请求参数是否存在
        if (request.getId() == null) {
            return R.fail("缺少必要请求参数~");
        }
        // 调用服务层进行删除题目操作，并返回删除结果
        return snsTestTopicItemService.removeById(request.getId()) ? R.success() : R.fail();
    }

}
